#!/bin/bash

# =============================================================================
# 脚本名称: run_inc.sh
# 功能: 调用DWD/DWS/ADS层的所有增量HQL脚本
# 作者：邹杭涛
# 日期: 2025-08-20
# =============================================================================

# -----------------------------
# 设置脚本和SQL文件的根目录
SCRIPT_DIR="/aml/dwd_sql"   # DWD层SQL脚本目录
SCRIPT_DIR2="/aml/dws_sql"  # DWS层SQL脚本目录
SCRIPT_DIR3="/aml/ads_sql"  # ADS层SQL脚本目录
LOG_DIR="/aml/insert_log"         # 日志输出目录

# 确保日志目录存在
mkdir -p "$LOG_DIR"

# 获取昨天的日期
dt=$(date -d "yesterday" +%Y-%m-%d)
dt_log=$(date -d "yesterday" +%Y%m%d)

# 定义要执行的SQL文件路径数组，先DWD后DWS
SQL_PATHS=( "$SCRIPT_DIR"/*.sql "$SCRIPT_DIR2"/*.sql "$SCRIPT_DIR3"/*.sql)

# -----------------------------
# 主函数
# -----------------------------
main() {
    local success_count=0
    local fail_count=0

    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始执行DWD/DWS/ADS层增量脚本 (处理日期: $dt)"

    for sql_path in "${SQL_PATHS[@]}"; do   
        # 检查SQL文件是否存在
        if [ ! -f "$sql_path" ]; then
            echo "[$(date '+%Y-%m-%d %H:%M:%S')] 错误: SQL文件不存在 - $sql_path" >&2
            continue
        fi

        # 生成日志文件名：表名_YYYYMMDD.log
        local log_filename="$(basename "${sql_path%.sql}")_${dt_log}.log"
        local log_path="${LOG_DIR}/${log_filename}"

        # 打印执行信息
        echo "[$(date '+%Y-%m-%d %H:%M:%S')] 执行: $sql_path -> 日志: $log_path"

        # 直接执行 Hive 命令（避免字符串拼接），并等待完成
        if hive --hivevar dt="$dt" -f "$sql_path" >"$log_path" 2>&1; then
            echo "[$(date '+%Y-%m-%d %H:%M:%S')] 成功: $sql_path"
            ((success_count++))
        else
            echo "[$(date '+%Y-%m-%d %H:%M:%S')] 失败: $sql_path (日志: $log_path)" >&2
            ((fail_count++))
        fi
    done

    # 输出汇总
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 执行完成。成功: $success_count, 失败: $fail_count"
    echo "日志目录: $LOG_DIR"
}

# -----------------------------
# 执行主函数
# -----------------------------
main "$@"